1. Technical Field
This disclosure relates generally to image processing, and, more specifically, to image stabilization in a device that includes a camera.
2. Description of the Related Art
When recording a scene with a video capturing device (e.g., a video camera), the captured frames may reflect any motion of the camera caused by a shaking hand, a foot-fall while walking, or other types of disruptions. In some cases, image stabilization techniques can be applied to reduce the amount of motion exhibited in the captured video sequence and/or to reduce the effects of motion caused by the camera's rolling shutter. A variety of techniques may be used to determine the motion reflected in the scene, such as using data from a gyroscope in the camera, or generating motion vectors based on optical flow calculations.
Regardless of how the motion data is generated, the resulting images (e.g., the frames of the video sequence) will require the application of one or more image transformations to adjust for the motion. These transformations can include any combination of offset translation, rotation, scaling, shear transformation and/or perspective transformation. Typically, such operations are applied piecewise to the images to account for the changes in motion during the frame capture due the rolling shutter. Typically, such transformations are applied to each frame of the image data after the data for that image frame is written to system memory. For example, a Graphics Processing Unit (GPU) or similar hardware may access the system memory in order to perform the piecewise transformations to different sections of the image data for each of the frames. Alternatively, software running on a CPU in the system may access the system memory in order to perform such transformations.